﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using ConnectToDatabase;
using ConnectToDatabase.Model;
using System.Data;

namespace QLGiayDep.Forms
{
    /// <summary>
    /// Interaction logic for FormKhuyenMai.xaml
    /// </summary>
    public partial class FormKhuyenMai : Page
    { 
        //private ShowObjectClient showObjectClient;
        private SelectDB selectDB;
        //private SelectObjectClient selectObjectClient;
        private OtherHandle otherHandle;
        private UpdateDB updateDB;
        DauSanPham dauSanPham = new DauSanPham();
        static bool m_bSelectData = false;
        int m_iFrom = 0;
        int m_iTo = 14;
        int m_iDistance = 0;
        string URL;

        public FormKhuyenMai(string _URL)
        {
            InitializeComponent();
            URL = _URL;
            m_iDistance = m_iTo - m_iFrom + 1;
            otherHandle = new OtherHandle();
            selectDB = (SelectDB)Activator.GetObject(typeof(SelectDB), URL + "SELECTDB_OBJECT");
            updateDB = (UpdateDB)Activator.GetObject(typeof(UpdateDB), URL + "UPDATEDB_OBJECT");
            AddComboboxPagingKM();
            if (m_iFrom + m_iDistance > selectDB.SelectAllKhuyenMai().Count)
                dataKhuyenMai.ItemsSource = selectDB.SelectAllKhuyenMai();
            else
                dataKhuyenMai.ItemsSource = selectDB.SelectAllKhuyenMai(m_iFrom, m_iTo);
        }

        private void Page_Loaded(object sender, RoutedEventArgs e)
        {
            //showObjectClient = new ShowObjectClient();
            //selectObjectClient = new SelectObjectClient();
        }

        private void AddComboboxPagingKM()
        {
            int count = selectDB.SelectAllKhuyenMai().Count;

            int temp = count / m_iDistance;
            if (temp * m_iDistance < count)
                temp++;

            for (int i = 0; i < temp; i++)
            {
                cmdPagingKM.Items.Add(i + 1);
            }
        }

        private void dataKhuyenMai_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            if (!m_bSelectData)
            {
                var item = dataKhuyenMai.SelectedItem as KhuyenMai;
                txtMaKhuyenMai.Text = item.MaKhuyenMai.ToString();
                txtMaDauSP.Text = item.MaDauSanPham.ToString();
                txtNoiDungKM.Text = item.NoiDungKM.ToString();
                txtGiamGia.Text = item.PTGiamGia.ToString();
                dtmTGianBatDau.SelectedDate = DateTime.Parse(item.NgayBatDau.ToString());
                dtmTGianKetThuc.SelectedDate = DateTime.Parse(item.NgayKetThuc.ToString());

                //m_bSelectData = true;
            }
            else
            {
                m_bSelectData = false;
                dataKhuyenMai.ItemsSource = selectDB.SelectAllKhuyenMai(m_iFrom, m_iTo);
            }
        }

        private void cmdPagingKM_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            if (!m_bSelectData)
                m_bSelectData = true;
            int temp = int.Parse(cmdPagingKM.SelectedItem.ToString()) - 1;
            int sumrows = selectDB.SelectAllKhuyenMai().Count;
            if (m_iTo + m_iDistance * temp > sumrows)
                dataKhuyenMai.ItemsSource = selectDB.SelectAllKhuyenMai(m_iFrom + m_iDistance * temp, sumrows - 1);
            else
                dataKhuyenMai.ItemsSource = selectDB.SelectAllKhuyenMai(m_iFrom + m_iDistance * temp, m_iTo + m_iDistance * temp);

            m_bSelectData = false;
            //}
            //else
            //{
            //    m_bSelectData = true;
            //    int temp = int.Parse(cmdPagingKM.SelectedItem.ToString()) - 1;
            //    int sumrows = selectDB.SelectAllKhuyenMai().Count;
            //    if (m_iTo + m_iDistance * temp > sumrows)
            //        showDB.ShowListKhuyenMai(dataKhuyenMai, m_iFrom + m_iDistance * temp, sumrows - 1);
            //    else
            //        showDB.ShowListKhuyenMai(dataKhuyenMai, m_iFrom + m_iDistance * temp, m_iTo + m_iDistance * temp);
            //    m_bSelectData = false;
            //}
        }

        private void btnThemSPKM_Click(object sender, RoutedEventArgs e)
        {
            WinKhuyenMai m_wKhuyenMai = new WinKhuyenMai(URL);
            m_wKhuyenMai.Show();
        }

        private void btnExportSPKM_Click(object sender, RoutedEventArgs e)
        {
            ExportExcel.exportExcel("Danh Sách Sản Phẩm Khuyến Mãi", selectDB.SelectAllKhuyenMaiDataSet());
        }

        private void txtGiamGia_TextChanged(object sender, TextChangedEventArgs e)
        {
            otherHandle.IsNumber(txtGiamGia);
        }

        private void btnSuaSPKM_Click(object sender, RoutedEventArgs e)
        {
            if (txtMaKhuyenMai.Text == "")
                MessageBox.Show("Chưa chọn Khuyến Mãi", "Thông báo");
            else
            {
                if (!m_bSelectData)
                    m_bSelectData = true;
                //DateTime m_dtStart = dtmTGianBatDau.SelectedDate.Value;
                //DateTime m_dtEnd = dtmTGianKetThuc.SelectedDate.Value;
                //int kt = updateDB.UpdateKhuyenMai(txtMaKhuyenMai.Text, txtMaDauSP.Text,txtNoiDungKM.Text, int.Parse(txtGiamGia.Text),m_dtStart.ToString("yyyy/MM/dd"),m_dtEnd.ToString("yyyy/MM/dd"));
                //if (kt == -1)
                //    MessageBox.Show("Update thông tin thất bại", "Thông Báo");
                //else
                //    MessageBox.Show("Update thông tin thành công","Thông Báo");
                if (txtMaDauSP.Text == "")
                    MessageBox.Show("Chưa chọn đầu sản phẩm khuyến mãi", "Thông Báo");
                if (txtNoiDungKM.Text == "" && txtGiamGia.Text == "")
                    MessageBox.Show("Chưa chọn nội dung khuyến mãi \nhoặc giảm giá bao nhiêu phần trăm", "Thông Báo");
                if (dtmTGianBatDau.SelectedDate == null)
                    MessageBox.Show("Chưa chọn ngày bắt đầu khuyến mãi", "Thông Báo");
                if (dtmTGianKetThuc.SelectedDate == null)
                    MessageBox.Show("Chưa chọn ngày kết thúc khuyến mãi", "Thông Báo");
                else
                {
                    dauSanPham = selectDB.SelectAllDauSanPham(txtMaDauSP.Text);

                    DateTime dtStart = DateTime.Parse(dtmTGianBatDau.SelectedDate.ToString());
                    DateTime dtEnd = DateTime.Parse(dtmTGianKetThuc.SelectedDate.ToString());
                    int result = DateTime.Compare(dtStart, dtEnd);

                    int countKMTest = selectDB.SelectAllKhuyenMai_KiemTraKhuyenMai(txtMaDauSP.Text, dtStart.ToString("yyyy/MM/dd"), dtEnd.ToString("yyyy/MM/dd")).Count;
                    if (result > 0)
                        MessageBox.Show("Ngày kết thúc phải sau ngày bắt đầu khuyến mãi", "Thông Báo");
                    else
                    {
                        if (countKMTest != 0)
                            MessageBox.Show("Kiểm tra lại khoảng thời gian khuyến mãi \n Sản phẩm đã được khuyến mãi trong khoảng thời gian này", "Thông Báo");
                        else
                        {
                            int m_iValueTemp;
                            bool result1 = int.TryParse(txtGiamGia.Text, out m_iValueTemp);
                            if (result1 == false)
                                m_iValueTemp = 0;
                            else
                                if (m_iValueTemp > 100)
                                {
                                    MessageBox.Show("Khuyến mãi 100%", "Thông Báo");
                                    txtGiamGia.Focus();
                                }

                            int kt = updateDB.UpdateKhuyenMai(txtMaKhuyenMai.Text, txtMaDauSP.Text, txtNoiDungKM.Text, int.Parse(txtGiamGia.Text), dtStart.ToString("yyyy/MM/dd"), dtEnd.ToString("yyyy/MM/dd"));
                            if (kt == -1)
                                MessageBox.Show("Sửa khuyến mãi thất bại", "Lỗi");
                            else
                            {
                                MessageBox.Show("Sửa khuyến mãi thành công", "Thông Báo");
                                if (!m_bSelectData)
                                    m_bSelectData = true;
                                if (m_iFrom + m_iDistance > selectDB.SelectAllKhuyenMai().Count)
                                    dataKhuyenMai.ItemsSource = selectDB.SelectAllKhuyenMai();
                                else
                                    dataKhuyenMai.ItemsSource = selectDB.SelectAllKhuyenMai(m_iFrom, m_iTo);
                                m_bSelectData = false;
                            }
                        }
                    }
                }
                m_bSelectData = false;
            }
        }

        private void btnSearchDauSP_Click(object sender, RoutedEventArgs e)
        {
            if (txtMaDauSP.Text == "")
                MessageBox.Show("Chưa nhập mã đầu sản phẩm", "Thông Báo");
            else
            {
                if (selectDB.SelectAllDauSanPham(txtMaDauSP.Text) == null)
                    MessageBox.Show("Kiểm tra lại mã đầu sản phẩm");
                else
                {
                    WinThemDauSP m_wDauSP = new WinThemDauSP(txtMaDauSP.Text);
                    m_wDauSP.btnThemDauSP.Visibility = Visibility.Collapsed;
                    m_wDauSP.GroupDauSP.IsEnabled = false;
                    m_wDauSP.Show();
                }
            }
        }
    }
}
